恺撒密码 | 您所在的位置:网站首页 › c语言 凯撒密码 › 恺撒密码 |
点击文章标题进入阅读模式! 尊重知识产权,引用注明出处!谢谢合作!有问题请在B站私信!链接欢迎大家关注我的Bilibli感谢一键三连哦~ 在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。 这里我们主要讨论的还是如何使用C语言,和Python语言实现恺撒密码的算法!关于密码,具体还请看到百度百科解释恺撒密码 (1). 如何确定哪些字符不需要改变?哪些字符需要改变?如果需要改变?应该改为哪个对应的字符? 算法的处理方法是:输入一个字符串,给字符变量char c,先判定它是否为字母(包括大小写)。若不是字母,则不改变c的值;若是字母则还要继续检查它是否在(‘Z’-密钥数字+1~’Z’)内(包括大小写字母也是对应转化)。如果不在这个范围,那么就可以正常偏移,即使该字母的ASCII值+密钥,这就等于字母往后移动了密钥的位数;如果在这个范围内,那么偏移是就该使该字母的ASCII值+密钥-26,因为有26个英文字母,所以减26就是回到A开始继续往后移动 (2). 如何使字符变量c改变为所指定的字母? 办法是改变它的ASCII值,例如字符变量的原值使大写字母’A’,想使c的值改变为’E’,只需执行’c = c + 4’即可,因为’A’的ASCII值是65,而’E’的ASCII值是69,二者相差4。 对照ASCII表 C语言源程序代码: 1234567891011121314151617181920212223242526272829303132333435//凯撒密码int add(){ char a[20] = { 0 }; int b = 0; int c = 0; printf("输入密文:\n"); scanf("%s", a); c = strlen(a); printf("输入密钥:\n"); scanf("%d", &b); for (int i = 0; i < c; i++) { if ((a[i] >= 'a' && a[i] = 'A' && a[1] = ('Z' - b + 1) && a[i] = ('z' - b + 1) && a[i] = ord('a') and ord(str[i]) = ord('A') and ord(str[1]) = (ord('Z') - b + 1) and ord(str[i]) = (ord('z') - b + 1) and ord(str[i]) |
CopyRight 2018-2019 实验室设备网 版权所有 |